<template>
  <div class="todo-header">
    <input type="text" placeholder="请输入你的任务名称，按回车键确认" 
        @keyup.enter="add" v-model="title"/>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue';
import type { Todo } from '../types';

// const props = defineProps({ // 这种方式不知道函数的形参或返回值的类型
//   addTodo: {
//     type: Function,
//     required: true
//   }
// })

interface Props {
  addTodo (todo: Todo): void
}
const props = defineProps<Props>()

const title = ref('')

const add = () => {
  // 如果没有正常输入, 不添加
  if (!title.value) return
  const todo: Todo = {
    id: Date.now(),
    title: title.value,
    completed: false
  }

  // 调用更新的函数, 向todos中添加一个todo
  props.addTodo(todo)

  // 清除输入
  title.value = ''
}
</script>

<style scoped>
  .todo-header input {
    width: 560px;
    height: 28px;
    font-size: 14px;
    border: 1px solid #ccc;
    border-radius: 4px;
    padding: 4px 7px;
  }

  .todo-header input:focus {
    outline: none;
    border-color: rgba(82, 168, 236, 0.8);
    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
  } 
</style>
